import { login, reqGetUserInfo, reqGetUSerDetail } from '@/api/user'
import { resetRouter } from '@/router'
import { getToken, removeToken, setToken } from '@/utils/auth'
const state = {
  token: getToken() || '',
  UserInfo: {

  }// 个人信息
}
const mutations = {
  setToken(state, token) {
    state.token = token
    setToken(token)
  },
  // 设置个人信息
  setUserInfo(state, info) {
    state.UserInfo = info
  },
  // 移除token
  removeToken(state) {
    state.token = ''// 厂库token清空
    removeToken()// 清除本地
  },
  removeUserInfo(state) {
    state.UserInfo = {}// 清除个人信息
  }
}
const actions = {
  // 登录
  async login({ commit }, loginForm) {
    const res = await login(loginForm)
    // console.log(res.data.data)
    commit('setToken', res.data)
    // 为了让login组件接收到登录的结果
    return res
  },
  // 获取个人信息的action
  async getUserInfo({ commit }) {
  // 发送请求,
    const { data } = await reqGetUserInfo()// 简陋的个人信息
    const { data: data2 } = await reqGetUSerDetail(data.userId)// 丰富个人信息
    // 再去提交存储个人信息的mutation
    const res = { ...data, ...data2 }
    commit('setUserInfo', res)
    return res
  },
  // 退出登录
  logout({ commit }) {
    commit('removeToken')
    commit('removeUserInfo')
    // 重置路由规则
    // 如果不重置内容动态路由会越来越多
    resetRouter()
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
